function Yuma(config){
	// 挂载的DOM元素对象
	this.$el = document.querySelector(config.el);
	// 将配置对象中的data作为实例属性$data的值
	this.$data = config.data;
	this.observer();
	// 调用解析器
	this.compile();
}
Object.assign(Yuma.prototype,{
	// 观察者：观察数据是否发生改变，一旦发生改变就要通知订阅者，订阅者负责更新元素中的属性值。
	observer(){
		for(let key in this.$data){
			Object.defineProperty(this,key,{
				get(){
					return this.$data[key]
				},
				set(v){
					this.$data[key] = v;
				}
			})
		}
	},
	// 解析器：是对模板进行解析（指令，过滤器，模板字符串等）
	compile(){
		for(let i=0;i<this.$el.children.length;i++){
			const node = this.$el.children[i];// 要解析的元素节点。
			// 该元素是否使用了指令y-model
			if(node.hasAttribute("y-model")){
				const attrValue = node.getAttribute("y-model");
				// 1- 设置value值
				node.value = this.$data[attrValue];
				// 2- 增加事件
				node.addEventListener("input",(e)=>{
					this.$data[attrValue] = e.target.value;
				})
				
			}
			if(node.hasAttribute("y-html")){
				node.innerHTML = this.$data[node.getAttribute("y-html")];
			}
			if(node.hasAttribute("y-text")){
				node.innerText = this.$data[node.getAttribute("y-text")];
			}
		}
	}
})